@echo off
chcp 65001 >nul
echo =======================================
echo   SPI.AgentServer Windows 生产环境发布
echo =======================================
echo.

REM 检查是否安装 dotnet
where dotnet >nul 2>&1
if %errorlevel% neq 0 (
    echo ❌ 未找到 dotnet 命令！请安装 .NET 8.0 SDK
    pause
    exit /b 1
)

echo 正在发布项目到 Windows 生产环境...
echo 发布模式: Release
echo 目标平台: win-x64
echo 包含运行时: 是
echo.

REM 清理旧的发布文件
if exist ".\publish\windows-production" (
    echo 清理旧的发布文件...
    rmdir /s /q ".\publish\windows-production"
)

REM 发布项目（自包含模式，包含 .NET Runtime）
dotnet publish -c Release -r win-x64 --self-contained true -o .\publish\windows-production

if %errorlevel% neq 0 (
    echo.
    echo ❌ 发布失败！
    pause
    exit /b 1
)

echo.
echo ✅ 发布成功！
echo.
echo =======================================
echo   发布信息：
echo =======================================
echo 📁 发布目录: .\publish\windows-production
echo 📦 包含文件: 可执行文件 + .NET Runtime + 所有依赖
echo 💾 文件大小: 约 80-100 MB
echo.
echo =======================================
echo   部署步骤：
echo =======================================
echo 1. 将 publish\windows-production 文件夹复制到服务器
echo    推荐路径：C:\inetpub\agent-server\
echo.
echo 2. 在服务器上修改配置文件：
echo    - appsettings.json（生产环境配置）
echo    - 修改数据库连接字符串
echo    - 修改 Qwen API 地址
echo    - 设置 UseMock 为 false（如需真实数据）
echo.
echo 3. 运行应用（3种方式）：
echo    方式A: 双击 SPI.AgentServer.exe
echo    方式B: 双击 start.bat
echo    方式C: 配置为 Windows 服务（自动启动）
echo.
echo 4. 测试访问：
echo    http://服务器IP:8215/swagger
echo.
echo =======================================
echo.

REM 创建启动脚本
echo 创建启动脚本...
(
echo @echo off
echo chcp 65001 ^>nul
echo echo =======================================
echo echo   SPI Agent Server - 启动中...
echo echo =======================================
echo echo.
echo echo 监听端口: 8215
echo echo 访问地址: http://localhost:8215/swagger
echo echo.
echo echo 按 Ctrl+C 停止服务器
echo echo =======================================
echo echo.
echo SPI.AgentServer.exe
echo pause
) > .\publish\windows-production\start.bat

echo ✅ 已创建 start.bat 启动脚本
echo.

REM 创建停止脚本
(
echo @echo off
echo echo 正在停止 SPI Agent Server...
echo taskkill /F /IM SPI.AgentServer.exe 2^>nul
echo if %errorlevel% equ 0 (
echo     echo ✅ 服务已停止
echo ^) else (
echo     echo ⚠️ 未找到运行中的服务
echo ^)
echo pause
) > .\publish\windows-production\stop.bat

echo ✅ 已创建 stop.bat 停止脚本
echo.

REM 创建配置说明文件
(
echo # SPI.AgentServer 生产环境部署说明
echo.
echo ## 快速部署
echo.
echo 1. 将整个文件夹复制到服务器 C:\inetpub\agent-server\
echo 2. 修改 appsettings.json 配置
echo 3. 双击 start.bat 启动
echo 4. 访问 http://localhost:8215/swagger
echo.
echo ## 配置文件修改
echo.
echo ### 修改端口（默认 8215）
echo 编辑 appsettings.json:
echo ```json
echo "Kestrel": {
echo   "Endpoints": {
echo     "Http": {
echo       "Url": "http://0.0.0.0:8215"
echo     }
echo   }
echo }
echo ```
echo.
echo ### 修改数据库连接
echo 编辑 appsettings.json:
echo ```json
echo "Database": {
echo   "UseMock": false,  // 改为 false 使用真实数据库
echo   "Connections": [
echo     {
echo       "Name": "Test",
echo       "ConnectionString": "Server=你的数据库IP;Database=数据库名;User=用户名;Password=密码;Port=3306;"
echo     }
echo   ]
echo }
echo ```
echo.
echo ### 修改 Qwen API 地址
echo 编辑 appsettings.json:
echo ```json
echo "Qwen": {
echo   "BaseUrl": "http://你的AI服务器IP:23333",
echo   "ConnectionMode": "direct"
echo }
echo ```
echo.
echo ## 配置为 Windows 服务（开机自启）
echo.
echo ### 使用 NSSM（推荐）
echo 1. 下载 NSSM: https://nssm.cc/download
echo 2. 解压到 C:\nssm\
echo 3. 以管理员身份运行 CMD:
echo    ```
echo    cd C:\nssm\win64
echo    nssm install AgentServer C:\inetpub\agent-server\SPI.AgentServer.exe
echo    ```
echo 4. 启动服务:
echo    ```
echo    nssm start AgentServer
echo    ```
echo.
echo ### 使用 sc 命令
echo ```cmd
echo sc create AgentServer binPath="C:\inetpub\agent-server\SPI.AgentServer.exe" start=auto
echo sc start AgentServer
echo ```
echo.
echo ## 防火墙配置
echo.
echo 允许 8215 端口:
echo ```powershell
echo New-NetFirewallRule -DisplayName "Agent Server" -Direction Inbound -Protocol TCP -LocalPort 8215 -Action Allow
echo ```
echo.
echo ## 常见问题
echo.
echo ### 1. 端口被占用
echo ```cmd
echo netstat -ano ^| findstr :8215
echo ```
echo.
echo ### 2. 查看日志
echo 日志位置: logs\agent-server-日期.txt
echo.
echo ### 3. 测试连接
echo ```cmd
echo curl http://localhost:8215/api/agent/query -X POST -H "Content-Type: application/json" -d "{\"sessionId\":\"test\",\"query\":\"查看设备统计\",\"database\":\"Test\"}"
echo ```
echo.
echo ## 管理命令
echo.
echo - 启动: start.bat
echo - 停止: stop.bat
echo - 或直接运行: SPI.AgentServer.exe
echo.
) > .\publish\windows-production\README.txt

echo ✅ 已创建 README.txt 部署说明
echo.

echo =======================================
echo   后续操作：
echo =======================================
echo.
echo 选项 1: 手动复制（适合本地服务器）
echo   - 打开 publish\windows-production 文件夹
echo   - 复制整个文件夹到目标服务器
echo.
echo 选项 2: 打包压缩（适合远程服务器）
echo   - 压缩 publish\windows-production 为 ZIP
echo   - 通过远程桌面或 FTP 上传
echo.
echo 选项 3: 直接在服务器运行
echo   - 如果当前就在服务器上，直接运行 start.bat
echo.
echo =======================================
echo.

REM 询问是否立即打开发布目录
set /p opendir="是否打开发布目录？(Y/N): "
if /i "%opendir%"=="Y" (
    explorer .\publish\windows-production
)

pause
